﻿@model PcaCaja.BOL.oVwMovimiento

@{
    var X = Html.X();
}

@(
 X.GridPanel()
        .ID("GridMovimientoUsuario")
        .Title("Mis movimientos")
        .Flex(1)
        .Store(
            X.StoreForModel()
                .AutoLoad(false)
                .ID("storeMovimientoUsuario")
                .Buffered(true)
                .PageSize(100)
                .LeadingBufferZone(300)
                .Parameters(p =>
                {
                    p.Add(new StoreParameter() { Name = "liquidacionId", Value = "App.liquidacionId.getValue()", Mode = ParameterMode.Raw });
                    p.Add(new StoreParameter() { Name = "detalle", Value = "App.detalleMovimiento.getValue()", Mode = ParameterMode.Raw });
                })
                .Proxy(
                    X.AjaxProxy()
                        .Url(Url.Action("GetList", "MovimientoUsuario"))
                        .Reader(X.JsonReader().RootProperty("data"))
                )
                .RemoteSort(false)
        )
        .ColumnModel(
                X.Column().DataIndex(Model, m => m.tipo_movimiento_id).Text("Tipo").Width(70).Align(Alignment.Center),
                X.Column().DataIndex(Model, m => m.codigo_grupo_movimiento).Text("Grupo").Flex(1),
                X.Column().DataIndex(Model, m => m.codigo_subgrupo_movimiento).Text("Sub Grupo").Flex(1),
                X.DateColumn().DataIndex(Model, m => m.fecha_hora_sistema).Text("Registrado").Format("dd-MM-yyyy").Align(Alignment.Center).Width(120),
                //X.DateColumn().DataIndex(Model, m => m.fecha_hora_actualizacion).Text("Actualizado").Format("dd-MM-yyyy").Align(Alignment.Center).Width(120),
                X.Column().DataIndex(Model, m => m.detalle).Text("Detalle").Flex(2),
                X.Column().DataIndex(Model, m => m.monto).Text("Monto").Flex(1).Align(Alignment.Right).Renderer("PcaGlobal.moneyFormat"),
                X.CommandColumn().Hideable(false).Text("Operaciones").Align(Alignment.Center)
                    .Commands(
                        X.GridCommand().CommandName("cmdEditar").ToolTip(t => t.Text = "Editar movimiento").Icon(Icon.ApplicationEdit),
                        X.GridCommand().CommandName("cmdEliminar").ToolTip(t => t.Text = "Eliminar movimiento").Icon(Icon.ApplicationDelete)
                    )
                    .DirectEvents(de =>
                    {
                        de.Command.Url = Url.Action("RunCommandGrid", "MovimientoUsuario");
                        de.Command.ExtraParams.Add(new Parameter { Name = "commandName", Value = "command", Mode = ParameterMode.Raw });
                        de.Command.ExtraParams.Add(new Parameter { Name = "movimientoId", Value = "record.data.movimiento_id", Mode = ParameterMode.Raw });
                        de.Command.Before = "Ext.getBody().mask('Cargando...!', 'x-mask-loading');";
                        de.Command.Complete = "Ext.getBody().unmask();";
                        de.Command.Failure = "PcaGlobal.showError(result.msg);";
                    })
        )
        .TopBar(
            X.Toolbar()
                .Items(
                    X.Button()
                        .ID("btnNuevo")
                        .Text("Nuevo")
                        .Disabled(true)
                        .Icon(Icon.Add)
                        .DirectEvents(de =>
                        {
                            de.Click.Url = Url.Action("FrmRegistrar", "MovimientoUsuario");
                            de.Click.ExtraParams.Add(new Parameter { Name = "liquidacionId", Value = "App.liquidacionId.getValue()", Mode = ParameterMode.Raw });
                            de.Click.Failure = "PcaGlobal.showError(result.msg);";
                            de.Click.Before = "Ext.getBody().mask('Cargando...!', 'x-mask-loading');";
                            de.Click.Complete = "Ext.getBody().unmask();";
                        }),
                    X.ToolbarSeparator(),
                    X.Hidden().ID("liquidacionId"),
                    X.ComboBox()
                        .ID("liquidacionesActivas")
                        .FieldLabel("Liquidacion")
                        .Editable(false)
                        .MarginSpec("0 0 0 7")
                        .LabelWidth(70)
                        .Width(300)
                        .QueryMode(DataLoadMode.Local)
                        .ForceSelection(true)
                        .DisplayField("fecha_hora_inicio")
                        .ValueField("liquidacion_id")
                        .EmptyText("Seleccione...")
                        .ListConfig(
                            Html.X().BoundList()
                                .LoadingText("Buscando...")
                                .ItemTpl(
                                    Html.X().XTemplate()
                                        .Html(@<text>
                                        <div>{fecha_hora_inicio:date("d F Y h:m A")}</div>
                                        </text>)
                                )
                        )
                        .Store(
                            X.StoreFor(typeof(PcaCaja.BOL.oLiquidacion))
                                .ID("storeLiquidacionesActivas")
                                .AutoLoad(true)
                                .Proxy(
                                    X.AjaxProxy()
                                        .Url(Url.Action("GetListActivos", "LiquidacionUsuario", new { area = "Caja" }))
                                        .Reader(X.JsonReader().RootProperty("data"))
                                )
                        )
                        .Listeners(l =>
                        {
                            l.AfterRender.Fn = "onAfterRender";
                            l.Select.Fn = "onSelect";
                            l.Blur.Fn = "onBlur";
                        }),
                        X.Button()
                            .ID("btnActualizarLiquidacionesActivas")
                            .Icon(Icon.ArrowRotateAnticlockwise)
                            .Listeners(l => {
                                l.Click.Handler = @"App.storeMovimientoUsuario.removeAll();
                                                    App.liquidacionId.setValue('');
                                                    App.btnNuevo.setDisabled(true);
                                                    App.btnCerrarLiquidacion.setDisabled(true);
                                                    App.detalleMovimiento.setDisabled(true);
                                                    App.btnActualizarGrid.setDisabled(true);
                                                    App.storeLiquidacionesActivas.reload();
                                                    App.liquidacionesActivas.setValue('');";
                            }),
                        X.ToolbarSeparator(),
                        X.Button()
                            .ID("btnCerrarLiquidacion")
                            .Text("Cerrar liquidacion")
                            .Disabled(true)
                            .Icon(Icon.Add)
                            .DirectEvents(de =>
                            {
                                de.Click.Url = Url.Action("FrmCerrarLiquidacion", "MovimientoUsuario");
                                de.Click.ExtraParams.Add(new Parameter { Name = "liquidacionId", Value = "App.liquidacionId.getValue()", Mode = ParameterMode.Raw });
                                de.Click.Failure = "PcaGlobal.showError(result.msg);";
                                de.Click.Before = "Ext.getBody().mask('Cargando...!', 'x-mask-loading');";
                                de.Click.Complete = "Ext.getBody().unmask();";
                            }),
                        X.ToolbarFill(),
                        X.TextField()
                            .ID("detalleMovimiento")
                            .Width(150)
                            .Disabled(true)
                            .EnableKeyEvents(true)
                            .EmptyText("Buscar por detalle...")
                            .Cls("upperTxt")
                            .Triggers(
                                X.FieldTrigger()
                                    .Hidden(true)
                                    .Icon(TriggerIcon.Clear)
                            )
                            .Listeners(l =>
                            {
                                l.KeyUp.Handler = @"if (Ext.isEmpty(App.detalleMovimiento.getValue(), false)) {
                                                    App.detalleMovimiento.setValue('');
                                                    App.detalleMovimiento.getTrigger(0).hide();
                                                } else {
                                                    App.detalleMovimiento.getTrigger(0).show();
                                                }";
                                l.TriggerClick.Handler = @"App.detalleMovimiento.setValue('');
                                                       App.detalleMovimiento.getTrigger(0).hide();
                                                       App.GridMovimientoUsuario.getSelectionModel().deselectAll(); 
                                                       App.storeMovimientoUsuario.load();";
                                l.SpecialKey.Handler = @"if(e.getKey() == e.ENTER){
                                                        e.stopEvent();
                                                        App.GridMovimientoUsuario.getSelectionModel().deselectAll(); 
                                                        App.storeMovimientoUsuario.load();
                                                    }";
                            }),
                        X.Button()
                            .ID("btnActualizarGrid")
                            .Text("Actualizar")
                            .Disabled(true)
                            .Icon(Icon.ArrowRotateAnticlockwise)
                            .Handler("App.GridMovimientoUsuario.getSelectionModel().deselectAll(); App.storeMovimientoUsuario.load();")
                )
       )
)
